/*
* @Author: Josh
* @Date:   2019-01-20 18:37:22
 * @Last Modified by: josh
 * @Last Modified time: 2020-06-09 11:21:49
*/
var webpack           = require('webpack'),
    ExtractTextPlugin = require("extract-text-webpack-plugin"),
    HtmlWebpackPlugin = require('html-webpack-plugin'),
    //环境变量配置， dev / onlien
    WEBPACK_ENV       = process.env.WEBPACK_ENV || 'dev';

console.log(WEBPACK_ENV);

//获取html-webpack-plugin参数的方法
var getHtmlConfig = function(name, title){
    
    return{
        //文件所在位置
        template : './src/view/' + name + '.html',
        //目标文件位置
        filename : 'view/' + name + '.html',
        //页面图标
        favicon  : './favicon.ico',
        title    : title,
        inject   : true,
        hash     : true,
        // 这里指定需要使用的js包，明朝同config中的entry
        chunks   : ['common', name]
    }
};


//webpack config
var config = {
    //以对象方式配置多入口文件
    entry: {
        'common'              : ['./src/page/common/index.js'],
        'index'               : ['./src/page/index/index.js'],
        'list'                : ['./src/page/list/index.js'],
        'detail'              : ['./src/page/detail/index.js'],
        'cart'                : ['./src/page/cart/index.js'],
        'order-confirm'       : ['./src/page/order-confirm/index.js'],
        'order-list'          : ['./src/page/order-list/index.js'],
        'order-detail'        : ['./src/page/order-detail/index.js'],
        'payment'             : ['./src/page/payment/index.js'],
        'user-login'          : ['./src/page/user-login/index.js'],
        'user-register'       : ['./src/page/user-register/index.js'],
        'user-pass-reset'     : ['./src/page/user-pass-reset/index.js'],
        'user-center'         : ['./src/page/user-center/index.js'],
        'user-center-update'  : ['./src/page/user-center-update/index.js'],
        'user-pass-update'    : ['./src/page/user-pass-update/index.js'],
        'result'              : ['./src/page/result/index.js'],
        'about'               : ['./src/page/about/index.js'],
    },
    //目标文件
    output: {
        //目标文件位置
        path       :  __dirname + '/dist/',
        publicPath :  '/dist',
        //输出的文件名 按入口文件名打包到js文件下
        filename   : 'js/[name].js'
    },
    //外部依赖的声明
    externals : {
        'jquery' : 'window.jQuery'
    },
    //各文件loader
    module: {
        loaders: [
            //检测到有css结尾的文件就使用css-loader和style-loader
            { test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader","css-loader") },
            //检测到有gif等结尾，或带参数的文件就使用url-loader  并通过添加参数限制文件的大小 ext表示文件扩展名
            { test: /\.(gif|png|jpg|woff|svg|eot|ttf)\??.*$/, loader: 'url-loader?limit=100&name=resource/[name].[ext]' },
            //.string的loader用于加载html模板
            { 
                test: /\.string$/, 
                loader: 'html-loader',
                query : {
                    minimize : true,
                    //指定是否删除属性的引号
                    removeAttributeQuotes : false
                }
            }
        ]
    },
    //配置目录的别名
    resolve : {
        alias : {
            //__dirname表示当前的根目录
            util         : __dirname + '/src/util',
            page         : __dirname + '/src/page',
            service      : __dirname + '/src/service',
            image        : __dirname + '/src/image',
            node_modules : __dirname + '/node_modules'            
        }
    },
    devServer: {
        port: 8088,
        inline: true,
        proxy : {
            '**/*.do' : {
                target: 'http://test.happymmall.com',
                changeOrigin : true
            }
        }
    },
    //加载webpack插件
    plugins: [
        //独立通用模块到js/base.js
        new webpack.optimize.CommonsChunkPlugin({
            name : 'common',
            filename : 'js/base.js'
        }),
        
        //把css单独打包到css文件里
        new ExtractTextPlugin("css/[name].css"),
        
        //html模板的处理
        new HtmlWebpackPlugin(getHtmlConfig('index', '首页')),
        new HtmlWebpackPlugin(getHtmlConfig('list', '商品列表')),
        new HtmlWebpackPlugin(getHtmlConfig('detail', '商品详情')),
        new HtmlWebpackPlugin(getHtmlConfig('cart', '购物车')),
        new HtmlWebpackPlugin(getHtmlConfig('order-confirm', '订单确认')),
        new HtmlWebpackPlugin(getHtmlConfig('order-list', '订单列表')),
        new HtmlWebpackPlugin(getHtmlConfig('order-detail', '订单详情')),
        new HtmlWebpackPlugin(getHtmlConfig('payment', '订单支付')),
        new HtmlWebpackPlugin(getHtmlConfig('user-login', '用户登录')),
        new HtmlWebpackPlugin(getHtmlConfig('user-register', '用户注册')),
        new HtmlWebpackPlugin(getHtmlConfig('user-pass-reset', '密码找回')),
        new HtmlWebpackPlugin(getHtmlConfig('user-center', '我的Mall')),
        new HtmlWebpackPlugin(getHtmlConfig('user-center-update', '个人信息修改')),
        new HtmlWebpackPlugin(getHtmlConfig('user-pass-update', '修改密码')),
        new HtmlWebpackPlugin(getHtmlConfig('result', '操作结果')),
        new HtmlWebpackPlugin(getHtmlConfig('about', '关于JoshMall')),
    ]
 };

 if('dev' === WEBPACK_ENV){
    config.entry.common.push('webpack-dev-server/client?http://localhost:8088/');
 }

 module.exports = config;